#ifndef _SE_SCENE_
#define _SE_SCENE_

#include "Core/Math.hpp"
#include "Core/Logger.h"

#include "Core/GUID.h"

#include "entt.hpp"

namespace SE
{
	class Entity;

	class Scene final
	{
		friend class Entity;
		friend class SceneHierarchyPanel;

	public:
		entt::registry mRegistry;
		HashMap<GUID, Entity> mEntityMap;

		Scene() = default;
		virtual ~Scene() = default;

		Entity createEntity(const String& name);
		Entity createEntity(const GUID& guid, const String& name = "Entity");
		void destroyEntity(Entity& entity);

		void onCompute(const Double deltaMilliseconds);
		void onRender(const Double deltaMilliseconds);
	};
} // !namespace SE

#endif // !_SE_SCENE_